#include "Arduino.h"
#include "config.h"


void ASRSetup() {
  Serial2.begin(115200, SERIAL_8N1, 16, 17);
}
String* datas = new String[6];
int datasLength = 0;
void ASRLoop() {
  if (Serial2.available()) {
    // 读取串口2接收到的数据
    String data = Serial2.readString();
    // 删除所有的 '\r' 字符
    data.replace("\r", "");

    // 按 '\n' 拆分字符串
    int index = 0;
    while (index != -1) {
      // 找到下一个 '\n' 字符的位置
      int nextIndex = data.indexOf('\n', index);

      if (nextIndex != -1) {
        // 提取从当前索引到下一个换行符之间的子串
        String line = data.substring(index, nextIndex);
        line.trim();  // 清除前后的空格或换行符
        Serial.println(line);
        // 处理这一行
        processLine(line);

        // 更新索引到下一行的开始位置
        index = nextIndex + 1;
      } else {
        // 如果没有更多的换行符，处理剩余的部分
        String line = data.substring(index);
        line.trim();
        processLine(line);
        break;
      }
    }
  }
}
void processLine(String data) {
  // 检查数据的开头是否为特定字符串
  if (data.startsWith("WX") || data.startsWith("you") || data.startsWith("SET")) {
    if (datasLength > 11) {
      // 将数组中的元素向前移动，删除第一个元素
      for (int i = 0; i < 11; i++) {
        datas[i] = datas[i + 1];
      }
      // 将新数据放在数组的最后一个位置
      datas[11] = data;
    } else {
      datas[datasLength++] = data;
    }
    if (data.startsWith("SET")) {
      ASRSet(data);
    }
#ifdef _SQUARELINE_PROJECT_UI_H
    String str = "";
    for (int i = 0; i < datasLength; i++) {
      str += datas[i];
      str += "\r\n";
    }
    lv_label_set_text(ui_Label14, str.c_str());
    lv_obj_set_style_text_font(ui_Label14, &ui_font_ScWXYYa, LV_PART_MAIN | LV_STATE_DEFAULT);
#endif
  }
}

void ASRSet(String data) {
  // 检查字符串是否以 "SET: setClock(" 开头
  if (data.startsWith("SET: setClock(")) {
    parseAndAddClock(data);
  }
}

void parseAndAddClock(String data) {
  // 去掉前缀和末尾的括号
  data.remove(0, 14);  // 从索引0开始删除14个字符
  data.remove(data.length() - 1);
  Serial.println("parseAndAddClock:"+data);

  // 分割字符串以获取小时、分钟和备注
  int firstComma = data.indexOf(',');
  int secondComma = data.indexOf(',', firstComma + 1);

  // 提取小时和分钟
  int hour = data.substring(0, firstComma).toInt();
  int minute = data.substring(firstComma + 1, secondComma).toInt();

  // 提取备注
  String remark = data.substring(secondComma + 3);  // 加3以跳过逗号和两个引号
  remark.trim();                                    // 移除可能的前后空格

  // 调用addClock函数，假设闹钟默认激活，每天重复
  addClock(hour, minute, remark, true, false);
  clockPagePrint();
}